EEPROM 개요

임베디드2025. 07. 02.
카테고리
게시일
시리즈

EEPROM이란?

ROM은 Read-only memory의 줄임말로, 본래 읽기만 가능한 메모리라는 뜻이다. 공장에서 제조될 때 부터 고정된 채 생산되는 것이 일반적이다. 그러나 최근 생산되는 대부분의 ROM은 적어도 한번 이상은 정보를 수정 가능하게 끔 되어있다.
PROM은 ‘프로그래밍 가능한 롬’으로, 내부의 회로를 변경해서 한번 데이터를 수정할 수 있다. 내부의 퓨즈를 끊어서 저장하기 때문에 한번 데이터 설정 이후 변경이 불가능하다. 여기서 더 발전한 EPROM 은 ‘Erasable PROM’ 으로, 자외선을 이용해 여러 번 썼다 지울 수 있다.
EEPROM은 전기적으로 지웠다 쓸 수 있는 ROM 을 의미한다. 전기적으로 동작하기 때문에 비교적 지우는 속도가 빠르고, 전용 롬 라이터(롬을 구워주는 장비)가 없어도 보통 이용이 가능하다. 데이터의 변경 주기가 긴 경우 RAM 대용으로 사용이 가능하다.
Atmega328 같은 MCU 내부에는 약 1kb의 EEPROM이 있어, 상수 등을 저장하는데 활용한다. RAM 보다는 읽고 쓰는데 속도가 많이 느리고, 쓰기 수명이 짧기 때문에 일반적인 변수를 저장하는 것은 권장하지 않는다

병렬 통신 EEPROM

256kb AT27C020 Pinmap
256kb AT27C020 Pinmap
핀 별 설명
  • CE는 칩을 활성화시키는 신호로, 읽고 쓸 때만 칩을 켜주어 전력 소비를 줄이는 것이 좋다.
  • OE는 출력 버퍼를 제어하는 신호로, OE가 1일 때

읽기 과정

notion image
CE핀과 OE핀 모두 Active-Low이므로 우선 두 핀 모두 High를 입력한다. 주소값을 입력한 뒤 CE핀에 Low를 인가해 칩을 활성하고, OE에 LOW를 인가해 출력을 활성화한다.

쓰기 과정

notion image
데이터를 쓸 때도 같은 Output 핀을 이용한다. PGM에 펄스 신호를 줄 때 기록이 된다. 이 때 OE가 반드시 LOW 여야 데이터 핀이 3-state 상태가 되어 입력을 받을 수 있는 상태가 된다는 것에 유의해야 한다. 위 타이밍도 예시에서는 Data가 올바르게 써졌는지 MCU에서 검증할 수 있도록 곧바로 출력하여 확인하는 모습을 볼 수 있다.

직렬 통신 EEPROM

병렬 통신은 핀의 숫자가 너무 많기 때문에 직렬 통신 방식의 EEPROM도 많이 사용된다. Microwire, I2C와 같은 시리얼 통신 프로토콜을 사용하는 경우가 많다.
AT93C46E, Microwire 통신
AT93C46E, Microwire 통신
 
AT24C1024, I2C 통신
AT24C1024, I2C 통신

MCU 내부 EEPROM

대표적으로 AVR과 같은 MCU에는 MCU 내부에 EEPROM을 가지고 있다. ATmega328 내부에는 1kb의 EEPROM 존재한다.
 
#include <avr/eeprom.h> uint8_t val = eeprom_read_byte((uint8_t*)0x00); // 읽기 eeprom_write_byte((uint8_t*)0x00, 123); // 쓰기
ATmega328 에서eeprom 사용하는 예시
좀 더 상위 스펙의 MCU에서는 EEPROM 보다는 더 유연하게 사용이 가능한 저용량의 Flash Memory 를 가지고 있다.